import path from 'path'
import resolve from '@rollup/plugin-node-resolve';  //让rollup支持nodejs的模块解析机制
import commonjs from '@rollup/plugin-commonjs';

import { terser } from 'rollup-plugin-terser';
import babel from 'rollup-plugin-babel';
import clear from 'rollup-plugin-clear'


const outputConfigs = [
    {
        file: path.resolve(__dirname, 'dist/esm/promisify.min.js'),
        format: `es`,
        name: 'promisifyFunc',
        sourcemap:true //是否和原文件做映射
    },
    {
        file: path.resolve(__dirname, 'dist/umd/promisify.min.js'),
        format: `umd`,
        name: 'promisifyFunc',
        sourcemap:true //是否和原文件做映射
    }

]

export default {
    input: path.resolve(__dirname, 'index.js'),
    output: outputConfigs,
    plugins: [
        clear({
            // required, point out which directories should be clear.
            targets: ['./dist'],
            // optional, whether clear the directores when rollup recompile on --watch mode.
            watch: false, // default: false
        }),
        resolve(),
        commonjs(),
        babel({
            exclude: 'node_modules/**',
            runtimeHelpers: true,
            presets: [['@babel/preset-env', {
                "targets": "> 0.25%, not dead",
                "modules": false,
                "useBuiltIns": "usage",
                "corejs": "3"
            }]],
            plugins: [
                // babel-polyfill解决了Babel不转换新API的问题，但是直接在代码中插入帮助函数，会导致污染了全局环境，并且不同的代码文件中包含重复的代码，导致编译后的代码体积变大。 （比如：上述的帮助函数_defineProperty有可能在很多的代码模块文件中都会被插入）
                // Babel为了解决这个问题，提供了单独的包babel-runtime用以提供编译模块的工具函数， 启用插件babel-plugin-transform-runtime后，Babel就会使用babel-runtime下的工具函数

                // 使用transform-runtime代替babel-polyfill目的是按需引入你需要babel转换的特性，而不是将整个polyfill引入，并且不会像polyfill一样重写原本的API。缺点是某些不支持的API，例如Object.assign Array.includes, 需要引入单独插件
                "@babel/plugin-transform-runtime",
                "@babel/plugin-proposal-class-properties",  // 箭头函数
                "@babel/plugin-proposal-export-namespace-from", // 提供export * as ns from 'mod' 语法
                "@babel/plugin-proposal-export-default-from"
            ]
        }),
        terser()
    ]

};